ストレージのパスを取得する

ストレージのパスを取得するには、Environment.getExternalStorageDirectory()関数を使用します。

例として、カメラで撮った写真の画像をアプリケーション内で取得してみます。

手元のキーボードを撮影しました。ギャラリーなどから、ファイルのパスを確認することが出来ます。

131213a

ImageViewを1つ配置して、次のようなコードを書いて実行してみます。

実行すると、ImageViewに撮影したキーボードの写真が表示されます。

131213b


さて、Environment.getExternalStorageDirectory()関数だけで全て解決すれば問題はないのですが、Androidの機種によってこの関数が返す値の意味が異なってきます。

例に挙げたアプリケーションはASUS MeMO Pad HD 7で実行したのですが、この機種の場合、この関数で実際に返されるパスは、内部ストレージのパスとなっています(なので、このエントリーのタイトルも「ストレージ」のパスと書きました)。

関数名にかかわらず、機種に内部ストレージと外部ストレージがある場合、上記関数では内部ストレージのパスを返すようです。

外部ストレージのパスを取得するAPIはというと…、ないようです。

ではどうすればよいかというと、Androidのシステム設定ファイル(/system/etc/vold.fstab)を見る方法があります。

この件について詳しくは、詳しく解説されている方の記事が既にありますので、そちらを参照すると良いでしょう。